package com.punai.customer.mapper;

import com.punai.common.core.mapper.CommonMapper;
import com.punai.customer.domain.CusLinkGxfeeCategory;
import com.punai.customer.domain.bo.CJFlRes;
import com.punai.customer.domain.bo.CusCategoryBo;
import com.punai.customer.domain.vo.CusGxLinkGkCategoriesVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 工序分包费用项 关联 材机分类Mapper接口
 *
 * @author ruoyi
 * @date 2022-12-09
 */
public interface CusLinkGxfeeCategoryMapper extends CommonMapper<CusLinkGxfeeCategory>
{
    /**
     * 查询工序分包费用项 关联 材机分类
     *
     * @param id 工序分包费用项 关联 材机分类主键
     * @return 工序分包费用项 关联 材机分类
     */
    public CusLinkGxfeeCategory selectDmcLinkGxfeeCategoryById(@Param("id") String id,@Param("companyId") Long companyId);

    /**
     * 查询工序分包费用项 关联 材机分类列表
     *
     * @param dmcLinkGxfeeCategory 工序分包费用项 关联 材机分类
     * @return 工序分包费用项 关联 材机分类集合
     */
    public List<CusLinkGxfeeCategory> selectDmcLinkGxfeeCategoryList(CusLinkGxfeeCategory dmcLinkGxfeeCategory);


    /**
     * 删除工序分包费用项 关联 材机分类
     *
     * @param id 工序分包费用项 关联 材机分类主键
     * @return 结果
     */
    public int deleteDmcLinkGxfeeCategoryById(String id);

    /**
     * 批量删除工序分包费用项 关联 材机分类
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteDmcLinkGxfeeCategoryByIds(String[] ids);

    // 给工序费用项使用
    List<CJFlRes> selectLinkDataAndEntity(@Param("companyId") Long companyId, @Param("gxId") String id);

    List<String> selectCategoryIdByGxId(@Param("companyId") Long companyId, @Param("gxId") String id);

    // 给地区中材机耗量使用
    List<CusCategoryBo> selectLinkDataAndEntityByAddress(@Param("companyId") Long companyId, @Param("gxId") String id, @Param("address") String address);

    List<String> selectCategoriesIdByGxId(@Param("gxId") String gxId,@Param("companyId") Long companyId);
    List<String> selectCategoriesIdByGxIdDel(@Param("gxId") String gxId,@Param("companyId") Long companyId);

    int updateDelFlagIsTwo(@Param("companyId") Long companyId,@Param("gxId") String gxId,@Param("delIds") List<String> delIds);

    int updateDelFlagIsZero(@Param("gxId") String gxId,@Param("companyId") Long companyId,@Param("categoryIds") List<String> categoryIds);

    public List<CusGxLinkGkCategoriesVo> selectListByGxId(@Param("gxId") String gxId, @Param("companyId") Long companyId);

    Integer updateGkItemById(@Param("companyId") Long companyId, @Param("id") String id, @Param("gkType") String gkType, @Param("gkId") String gkId);

    Integer updateGkItemByGxId(@Param("companyId") Long companyId, @Param("gxIds") List<String> gxIds,@Param("categoryId") String categoryId, @Param("gkType") String gkType, @Param("gkId") String gkId);

    Integer updateGkItemBySpecId(@Param("companyId") Long companyId, @Param("specId") String specId,@Param("categoryId") String categoryId, @Param("gkType") String gkType, @Param("gkId") String gkId);

    Integer setLinkGkNull(@Param("gxId") String gxId,@Param("companyId") Long companyId,@Param("nullGkItem")String nullGkItem);
}
